//package se.sics.gvod.simulator.croupier.main;
//
//import se.sics.gvod.config.CroupierCompositeConfiguration;
//import se.sics.gvod.config.VodConfig;
//import se.sics.gvod.simulator.croupier.scenarios.*;
//
//public class Main {
//
//    public static int SEED;
//    public static int PARENT_SIZE = 4;
//    public static int PARENT_UPDATE_ROUND_TIME = 2000;
//
//    public static void main(String[] args) throws Throwable {
//        if (args.length < 8) {
//            System.err.println("");
//            System.err.println("usage: <prog> seed exp numPub numPriv local-history-size neighbour-history-size expLength nodeSelection");
//            System.err.println("");
//            System.exit(1);
//        }
//        SEED = Integer.parseInt(args[0]);
//
//        VodConfig.init(new String[]{"-seed", args[0]});
//
//
//        Scenario scenario = null;
//        String scenarioName = args[1];
//        int numPub = (int) Double.parseDouble(args[2]);
//        if (numPub < 1) {
//            System.err.println("You must have >0 public nodes");
//            System.exit(1);
//        }        
//        int numPriv = (int) Double.parseDouble(args[3]);
//        if (numPriv < 1) {
//            System.err.println("You must have >0 private nodes");
//            System.exit(1);
//        }
//        int localHistorySize = (int) Double.parseDouble(args[4]);
//        int neighbourHistorySize = (int) Double.parseDouble(args[5]);
//        int expLength = (int) Integer.parseInt(args[6]);
//        String nodeSelection = args[7];
//    
//
//        Scenario.FIRST_PRIVATE = numPriv;
//        Scenario.SECOND_PUBLIC = numPub;
//        Scenario.COLLECT_RESULTS = expLength;
//
//        CroupierCompositeConfiguration configuration = 
//                new CroupierCompositeConfiguration(PARENT_SIZE,  PARENT_UPDATE_ROUND_TIME,
//                localHistorySize, neighbourHistorySize, nodeSelection);
//        configuration.store();
//
//
//        if (scenarioName.equalsIgnoreCase("join")) {
//            scenario = new ScenarioJoin();
//        } else if (scenarioName.equalsIgnoreCase("churn")) {
//            scenario = new ScenarioLowChurn();
//        } else if (scenarioName.equalsIgnoreCase("high-churn")) {
//            scenario = new ScenarioHighChurn();
//        } else if (scenarioName.equalsIgnoreCase("failure")) {
//            scenario = new ScenarioFailure();
//        }
//
//        if (scenario == null) {
//            System.err.println("");
//            System.err.println("invalid scenario name.");
//            System.err.println("the scenarios: join-only, low-churn, high-churn, and failure.");
//            System.err.println("");
//
//            System.exit(1);
//        }
//
//        scenario.setSeed(System.currentTimeMillis());
//        scenario.simulateCroupier();
//    }
//}
